package com.xuecheng.comment.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xuecheng.api.comment.model.dto.CommentDTO;
import com.xuecheng.api.comment.model.qo.CommentConditionModel;
import com.xuecheng.api.comment.model.vo.CommentStatisticsVo;
import com.xuecheng.comment.entity.Comment;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import com.xuecheng.common.domain.response.RestResponse;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author itcast
 * @since 2019-10-31
 */
public interface CommentService extends IService<Comment> {

    /**
     * 分页查询评论内容， 可根据评论对象，可根据评论归属对象查询--微服务远程调用
     *
     * @param params
     * @param commentModel
     * @return
     */
    RestResponse<PageVO<CommentDTO>> list(PageRequestParams params, CommentConditionModel commentModel, Boolean company);

    /**
     * 添加评论
     *
     * @param commentDTO
     * @return
     */
    RestResponse<CommentDTO> addComment(CommentDTO commentDTO);

    /**
     * 删除评论
     *
     * @param commentId
     * @return
     */
    RestResponse<CommentDTO> delComment(Long commentId);

    /**
     * 批量删除评论
     *
     * @param commentIds
     * @return
     */
    RestResponse<Boolean> batchDelComment(List<Long> commentIds);

    /*点赞*/
    RestResponse<CommentDTO> praise(Long commentId);

    /**
     * 统计
     *
     * @return CommentStatisticsVo 封装统计数据
     * @Param: coursePubId 课程发布id
     */
    RestResponse<CommentStatisticsVo> getCommentStatistics(Long coursePubId);


    /**
     * 根据id获得评论--远程调用
     * @param commentId
     * @return
     */
    RestResponse<CommentDTO> getCommentById(Long commentId);


}
